package com.reflect;

import org.junit.Test;

import java.lang.reflect.Constructor;

/**
 * 调用构造器获得返回实例对象：通过调用构造器的newInstance方法
 */

public class TestStudentDemo2 {
    public static void main(String[] args) throws Exception {

            //首先获取一个类对象
            Class c=Student.class;
            //获取无参构造器
            Constructor constructor = c.getDeclaredConstructor();
            System.out.println(constructor.getName()+"----->"+constructor.getParameterCount());

            //获取有参数构造器
            Constructor constructor1 = c.getDeclaredConstructor(String.class, int.class, double.class);
            System.out.println(constructor1.getName()+"---->"+constructor1.getParameterCount());


            //获取student无参实例对象
            Student o =(Student) constructor1.newInstance();
        System.out.println("无参构造器"+o);

            //获取student有参实例对象
            Student o1 =(Student) constructor1.newInstance("凌毅",20,99.8);
        System.out.println("有参构造器"+o1);

            //如果遇到私有构造器，可以使用setAccessible（true）暴力反射，这样就可以得到实例对象
            constructor1.setAccessible(true);




    }





}
